const {User}=require('../../model/user');
const bcrypt=require('bcrypt');


module.exports=async (req, res) => {
    const { email, password } = req.body;
    //二次验证，以防浏览器禁用JavaScript
    if (email.trim().length == 0 || password.trim().length == 0) {
        return res.status(400).render('admin/error', { msg: '邮件或者密码错误' });
    }
    // 根据邮箱地址查询用户信息
    // 如果查询到了用户，user变量的值是变量类型
    // 如果没有查询到用户，user变量的值为空
    let user= await User.findOne({email:email});
    if(user){
        // 根据邮箱查询到了用户
        // 将客户端和用户信息中的密码进行比对
        // 使用bcrypt.compare 对比明文密码和加密后的密码
        // 参数一为明文密码，参数二为加密密码
        let isValid=await bcrypt.compare(password,user.password);
        if(isValid){
            // 登录成功
            // 将用户名存储在请求对象中
            req.session.username=user.username;
            // 将用户角色存储在session当中
            req.session.role=user.role;
            // 将数据开放到模板中
            req.app.locals.userInfo=user;
            // 对用户的角色进行判断
            if(user.role=='admin'){
                // 重定向到用户管理页面
                res.redirect('/admin/user');
            }else{
                res.redirect('/home/')
            }
            // 登录成功后进行重定向到用户列表页面
            // res.redirect('/admin/user');
        }else{
            return res.status(400).render('admin/error', { msg: '邮件或者密码错误' });
        }
    }else{
        // 没有查询到用户
        return res.status(400).render('admin/error', { msg: '邮件或者密码错误' });
    }
};